Scroll to navigation

PROCMAILRC(5) File Formats Manual PROCMAILRC(5)

NAZWA

procmailrc - plik rc procmaila

SKŁADNIA

$HOME/.procmailrc

OPIS

Dla szybkiego startu obejrzyj sekcję UWAGI na końcu strony podręcznika procmail(1).

Plik rc składa się z przypisań zmiennych środowiskowych (niektóre z nich mają specjalne znaczenie dla procmaila) i reguł. W najprostszej postaci, reguły są po prostu jednoliniowymi wyrażeniami regularnymi, które są poszukiwane w nagłówkach przychodzącej poczty; pierwsza reguła, która zostanie dopasowana jest używana do określenia gdzie dany list ma pójść (zwykle do pliku). Jeśli przetwarzanie dojdzie do końca pliku rc, procmail dostarczy pocztę do $DEFAULT.

Istnieją dwa rodzaje reguł: dostarczające i niedostarczające. Jeśli dopasowana zostanie reguła dostarczająca, procmail zakłada, że poczta (zgadłeś) jest dostarczona i zakończy przetwarzanie pliku rc po wykonaniu linii akcji reguły. Jeśli dopasowana zostanie reguła niedostarczająca, to przetwarzanie pliku rc będzie kontynuowane nawet po wykonaniu akcji tej reguły.

Reguły dostarczające są tymi, które powodują zapis nagłówka lub ciała listu do pliku, jego zaabsorbowanie przez program lub przeforwardowanie do innego adresu pocztowego.

Reguły niedostarczające to te, które łapią wyjście programu lub filtru z powrotem do procmaila, lub te, które rozpoczynają zagnieżdżony blok.

Można powiedzieć procmailowi by traktował regułę dostarczającą jako niedostarczającą poprzez przekazanie takiej regule flagi `c'. Spowoduje to, że procmail wygeneruje kopię listu typu carboncopy, tj. dostarczając go regule i dalej przetwarzając plik rc.

Używając dowolnej ilości reguł, możesz posortować swoją pocztę wprost do określonych folderów pocztowych. Pamiętaj jednak, że poczta może wpływać do tych folderów w tym samym momencie (jeśli kilka procmaili działa naraz, co nie jest nieprawdopodobne przy dużej ilości poczty). Aby upewnić się, że nie narobi to bałaganu, zalecane jest robienie właściwego użytku z plików blokujących.

Inicjalizacje zmiennych środowiskowych i reguły mogą być swobodnie przeplatane w pliku rc. Jeśli zmienna środowiskowa ma dla procmaila specjalne znaczenie, zostanie użyta odpowiednio w momencie przetwarzania. (np. możesz zmienić katalog bieżący kiedy tylko chcesz przez podanie nowego MAILDIR, zamienić pliki blokujące przez podanie nowego LOCKFILE, zmienić umask, itd., możliwości jest nieskończenie wiele :-).

Inicjalizacje i podstawienia tych zmiennych środowiskowych są obsługiwane dokładnie jak w sh(1) (to włącza wszystkie możliwe cytaty i sekwencje specjalne), z dodatkową premią, że puste miejsca dookoła '=' są ignorowane i tym, że jeśli zmienna pojawi się bez '=' na końcu, to zostanie usunięta ze środowiska. Każdy program w odwrotnych apostrofach, uruchomiony przez procmail będzie miał cały list na swoim stdin.

Komentarze

Słowo zaczynające się od # i wszystkie podążające za nim znaki, aż do nowej linii są ignorowane. Nie tyczy się to linii warunkowych, które nie mogą być komentowane.

Reguły

Linia zaczynająca się od ':' oznacza początek reguły. Ma następujący format:

:0 [flagi] [ : [lokalnyplikblokujący] ]
<zero lub więcej warunków (jeden na linię)>
<dokładnie jedna linia akcji>

Warunki zaczynają się od `*' i wszystko co następuje po tym znaku jest przekazywane wewnętrznemu egrepowi, poza początkowymi i końcowymi białymi spacjami. Wyrażenia regularne są całkowicie kompatybilne z normalnymi wyrażeniami regularnymi egrep(1). Zobacz także Rozszerzone wyrażenia regularne.

Warunki są logicznie koniugowane; jeżeli nie ma warunków, wynik jest domyślnie prawdziwy.

Flagi mogą być dowolnymi z następujących:

Egrepuj nagłówek (domyślnie).
Egrepuj ciało.
Powiedz wewnętrznemu egrepowi aby rozróżniał duże i małe litery (w przeciwieństwie do właściwości domyślnej).
Ta reguła będzie zależeć od ostatniej poprzedzającej reguły (na bieżącym poziomie zagnieżdżenia) bez flagi `A' lub `a'. Umożliwia to wiązanie akcji zależących od wspólnego warunku.
Ma takie samo znaczenie jak flaga `A', lecz zależy także od pomyślnego zakończenia poprzedzającej reguły.
Ta reguła jest wykonywana tylko jeśli bezpośrednio poprzedzająca reguła nie była wykonana. Wykonanie tej reguły wyłącza także wszelkie bezpośrednio następujące reguły z flagą 'E'. Umożliwia to stawianie akcji `else if'.
Ta reguła jest wykonywana tylko jeśli bezpośrednio poprzedzająca reguła się nie powiodła. Umożliwia to określanie akcji na błędy.
Prześlij nagłówek listu do potoku (domyślne).
Prześlij ciało listu do potoku (domyślne).
Załóż, że potok jest filtrem.
Wygeneruj kopię carbon copy tego listu. Ma to tylko sens dla reguł dostarczających Jedyną niedostarczającą regułą, na której flaga ta ma jakiś skutek jest wypadek zagnieżdżonego bloku, w celu wygenerowania kopii carbon copy proces procmaila zostanie sklonowany (pliki blokujące nie zostaną odziedziczone), podczas gdy klon będzie pracować jak zwykle, rodzic przeskoczy blok.
Czekaj na zakończenie filtru lub programu i sprawdź kod wyjścia (normalnie ignorowany); jeśli filtr zwrócił błąd, tekst nie będzie filtrowany.
Ma takie samo znaczenie jak flaga `w', lecz powstrzyma wszelkie informacje typu `Program failure'.
Ignoruj wszelkie błędy zapisu na tej regule (np. zwykle przez wcześnie zamknięty potok).
Tryb surowy: nie próbuj zapewnić, że list kończy się pustą linią, zapisz go jakim jest.

Istnieją pewne warunki specjalne, których możesz użyć, a które nie są w pełni regularnymi wyrażeniami. Aby wybrać je, warunek musi zaczynać się od:

!
Odwróć warunek.
$
Oszacuj resztę według reguł podstawiania sh(1) wewnątrz podwójnych cudzysłowów, pomiń początkowe białe spacje i przetwórz ponownie.
?
Użyj kodu wyjścia podanego programu.
<
Sprawdź czy całkowita długość listu jest krótsza niż podana (dziesiętnie) ilość bajtów.
>
Analogiczne do '<'.
Porównaj resztę z wartością tej zmiennej środowiskowej (nie może to być pseudozmienna). Specjalnymi wypadkami są `B', `H', `HB' i `BH', które zwyczajnie przeciążają domyślny obszar przeszukiwania nagłówka/ciała (header/body) zdefiniowanego dla tej reguły.
\
Aby zacytować dowolny z powyższych znaków na początku linii.

Lokalny plik blokujący

Jeśli umieścisz drugi (kończący) ':' w pierwszej linii reguły, to procmail użyje lokalnego pliku blokującego (locallockfile) (tylko dla tej reguły). Opcjonalnie możesz podać jakiego pliku użyć; jednak jeśli tego nie uczynisz, procmail użyje nazwy pliku celu (lub nazwy pliku następującej po pierwszym '>>') i dopisze do niej $LOCKEXT.

Linia akcji reguły

Linia akcji może zaczynać się od następujących znaków:

!
Forwarduje do podanych adresów pocztowych.
|
Uruchamia określony program, prawdopodobnie w $SHELL-u, jeśli wykryto jakiś ze znaków $SHELLMETAS. Możesz opcjonalnie poprzedzić ten symbol potoku znakiem variable=, który spowoduje, że stdout programu zostanie przechwycony do zmiennej środowiskowej variable. Jeśli podasz tylko symbol potoku, bez żadnego programu, to procmail wrzuci list na stdout.
{
Jeśli następuje za tym przynajmniej jedna spacja, tabulacja, lub nowa linia, to oznacza to początek zagnieżdżonego bloku. Wszystko, aż do następnego nawiasu zamykającego, będzie zależeć od warunków podanych dla tej reguły. Dozwolone jest nieograniczone zagnieżdżanie. Nawias zamykający istnieje zwyczajnie po to, by oddzielić blok; w żadnym wypadku nie wywoła zakończenia procmaila. Po dotarciu do końca bloku, przetwarzanie będzie kontynuowane, jak zwykle, po tym bloku. W bloku zagnieżdżonym flagi `H' i `B' dotyczą tylko warunków prowadzących do tego bloku, flagi `h' i `b' nie działają tak czy inaczej.

Wszystko inne będzie uznawane za nazwę mailboxa (zarówno nazwę pliku lub katalog--absolutny lub względny do bieżącego katalogu (zobacz MAILDIR)). Jeśli jest to (możliwe że jeszcze nie istniejąca) nazwa pliku, poczta zostanie do niego doklejona.

Jeśli jest to katalog, poczta zostanie dostarczona do nowo utworzonego, unikalnego pliku o nazwie $MSGPREFIX* w podanym katalogu. Jeśli nazwa katalogu kończy się "/.", to katalog ten jest uznawany za folder MH; procmail użyje następnego numeru, który będzie dostępny. Gdy procmail dostarcza do katalogów, możesz podać wiele katalogów, do których należy dostarczyć (przy użyciu twardych dowiązań).

Domyślne wartości zmiennych środowiskowych

Twoje (odbiorcy) wartości domyślne
& |<>~;?*[
-c
/var/spool/mail/$LOGNAME
(Chyba, że podano -m, wtedy opcja ta jest nieustawiona)
$HOME/
(Chyba, że nazwa pierwszego pomyślnie otwartego pliku rc zaczyna się od ./, w którym wypadku wartością domyślną jest `.')
$ORGMAIL
msg.
/usr/sbin/sendmail
Bieżąca nazwa hosta
no
(Jeśli plik rc jest podany w linii komend)
.lock

Inne czyszczone lub preustawiane zmienne środowiskowe to IFS, ENV, PWD, PATH=$HOME/bin :/bin :/usr/bin :/sbin :/usr/sbin :/usr/local/bin :/usr/local/sbin :/usr/bin/X11 and USER=$LOGNAME.

Środowisko

Zanim zgubisz się w mętliku zmiennych środowiskowych, pamiętaj że wszystkie one mają sensowne wartości domyślne.

Bieżący katalog w momencie gdy procmail jest uruchomiany (znaczy to, że wszystkie ścieżki są relatywne do $MAILDIR).
Domyślny plik mailbox (jeśli nie powiedziano inaczej, procmail wrzuci pocztę do tego mailboxa). Procmail automatycznie użyje $DEFAULT$LOCKEXT jako pliku blokującego przed zapisaniem czegoś do tego mailboxa. Nie musisz ustawiać tej zmiennej, ponieważ standardowo wskazuje ona na standardowy mailbox systemu.
Plik ten będzie zawierał wszelkie komunikaty diagnostyczne i komunikaty o błędach od procmaila, lub od innych programów uruchomionych przez procmaila. Jeśli plik ten nie jest podany, komunikaty będą przesyłane do wysyłającego. Zobacz także LOGABSTRACT.
Ustawiając tę zmienną na `yes' lub `on', możesz włączyć rozszerzoną diagnostykę, wyłączyć zaś można ją przez ustawienie jej na `no' lub `off'.
Zanim procmail zakończy, raportuje dostarczoną wiadomość w $LOGFILE, pokazując pola `From ' i `Subject: ' nagłówka, folder do którego poszła wiadomość, oraz jej długość (w bajtach). Ustawienie tej zmiennej na `no' powstrzymuje generowanie tych informacji. Jeśli ustawisz ją na `all', procmail będzie logował każdą pomyślnie zakończoną regułę dostarczenia, którą przetworzy.
Wartość przyznana tej zmiennej będzie dodana do $LOGFILE.
Zazwyczaj mailbox systemowy (ORiGinal MAILbox). Jeśli z jakiegoś powodu (jak przepełnienie systemu plików), list nie mógł być dostarczony do tego mailboxa, to procmail dostarczy go tutaj. Jeśli jednak nie będzie mógł nawet tego uczynić, to list zostanie odbity do wysyłającego.
Globalny plik semaforowy. Jeśli plik ten już istnieje, procmail będzie czekał aż zniknie i utworzy go samodzielnie (i wyczyści gdy skończy). Jeśli podano więcej niż jeden plik blokujący, to poprzedni zostanie usunięty przed próbą utworzenia nowego. Używanie globalnego pliku blokującego jest złą praktyką, lepiej używać lokalnych.
Domyślne rozszerzenie, które jest dodawane do plików docelowych, aby określić, którego z lokalnych plików blokujących użyć.
Liczba sekund, które procmail ma odespać przed drugą próbą pliku blokującego (jeśli taki już istniał); jeśli liczby nie podano, to wynosi ona 8 sekund.
Liczba sekund, które mijają od ostatniej modyfikacji pliku blokującego, zanim procmail zdecyduje, że musi to być błędnie pozostawiony plik blokujący, który trzeba usunąć na siłę. Wartość zero mówi, że nie ma czasu oczekiwania i że procmail ma czekać do skutku. Jeśli nie jest podany, to odpowiada 1024 sekundom. Wartość ta jest przydatna w zapobieganiu niezdefiniowanym zawieszeniom sendmaila/procmaila.
Ilość sekund, które muszą minąć nim procmail zdecyduje, że dziecko, które uruchomił musiało się zawiesić. Program odbierze od procmaila sygnał TERMINATE, a przetwarzanie pliku rc pójdzie dalej. Jeśli podano zero, to nie będzie tu używany czas oczekiwania i procmail będzie czekać do skutku; jeśli zmienna nie jest podana, wartość domyślna odpowiada 960 sekundom.
Przedrostek nazwy pliku, który jest używany w wypadku dostarczania do katalogu (nie używany w katalogach MH).
jeśli nie jest to nazwa hosta maszyny, przetwarzanie bieżącego pliku rc zostaje przerywane. Jeśli w linii komend podano inne pliki rc, to przetwarzanie będzie kontynuowane z następnym z nich. Jeśli wykorzystane zostaną wszystkie pliki rc, program zakończy pracę, lecz nie wygeneruje błędu (np. mailer będzie sądził, że wiadomość została dostarczona).
Nazwa mówi za siebie (jeśli nie, zapomnij o tym :-). Wszystko przyznane zmiennej UMASK jest interpretowane jako wartość ósemkowa. Jeśli nie jest podana, umaska ma wartość 077. Jeśli umaska zezwala na o+x, wszystkie mailboxy, do których procmail dostarcza bezpośrednio, otrzymają zmianę trybu o+x. Może to być używane do sprawdzania, czy przybyła nowa poczta.
Jeśli jakikolwiek ze znaków SHELLMETAS pojawi się w linii określającej filtr lub program, to linia zostanie przekazana $SHELL-owi, a nie zostanie wywołana bezpośrednio.
Każde wywołanie $SHELL-a będzie następujące:
"$SHELL" "$SHELLFLAGS" "$*";
Jeśli nie używasz właściwości forwardowania, nie martw się o to. Określa to program wzywany do forwardowania poczty.
Jest wywoływany jako: "$SENDMAIL" "$@";
Ilość powtórek, które mają być dokonane jeśli pojawi się błąd `process table full', `file table full', `out of memory' lub `out of swap space'. Jeśli liczba ta jest ujemna, procmail będzie próbował wiecznie; jeśli nie jest podana, odpowiada wartości 4. Powtórki zachodzą co $SUSPEND sekund. Ideą, która kryje się za tym, jest to, że jeśli np. wykorzystany został obszar swap, lub wykorzystana jest tablica procesów, to wiele innych programów wykryje to także i przerwie działanie, lub 'padnie', zwalniając cenne zasoby procmailowi.
Liczba sekund, podczas których procmail będzie pauzował jeśli musi czekać na coś, co obecnie jest niedostępne (pamięć, fork, itd.); jeśli nie podane, odpowiada 16 sekundom. Zobacz także: LOCKSLEEP.
Długość wewnętrznych buforów liniowych, nie może być mniejsza niż 128. Wszystkie linie odczytywane z pliku rc nie powinny mieć więcej niż $LINEBUF znaków przed i po rozszerzeniu. Jeśli wartość nie jest podana, odpowiada 2048. Limit ten oczywiście nie stosuje się do samego listu, który może mieć określone długości linii, lub może być plikiem binarnym.
Jeśli ustawione na `yes', to procmail będzie udawał przed agentem pocztowym, że poczta została dostarczona. Jeśli poczta nie mogła być dostarczona, po napotkaniu tego ustawienia zostanie utracona (nie będzie np. odbita).
Gdy procmail będzie kończył działanie, wywoła zawartość tej zmiennej. Kopia listu może być odczytana ze stdin. Wszelkie wyjście wyprodukowane przez tę komendę będzie dodane do pliku $LOGFILE. Przykładowe zastosowania TRAP to: usuwanie plików tymczasowych, logowanie własnych uzupełnień, itp. Zobacz także EXITCODE i LOGABSTRACT.
Gdy procmail kończy działanie, a zmienna ta została ustawiona na dodatnią wartość numeryczną, procmail użyje jej jako kodu wyjścia. Jeśli zmienna ta jest ustawiona, lecz pusta, procmail ustawi kod wyjścia na wartość zwracaną przez program TRAP. Jeśli zmienna ta nie została ustawiona, procmail ustawi ją na krótko przed wywołaniem programu TRAP .
Zmienna ta jest inicjalizowana przez procmail za każdym razem, gdy dostarcza coś jakiemuś folderowi lub programowi. Zawsze zawiera ona nazwę ostatniego foldera (lub programu) do którego coś dostarczano.
Zmienna ta jest inicjalizowana przez procmail za każdym razem, gdy ma on wyciągnąć tekst z wyrażenia regularnego. Będzie zawierać cały tekst odpowiadającego wyrażenia regularnego po żetonie `\/'.
Przyznanie dodatniej wartości dla tej zmiennej daje taki sam rezultat, jak komenda `shift' w sh(1). Komenda ta jest najbardziej użyteczna do wyciągania dodatkowych argumentów podanych procmailowi, podczas gdy działa jako filtr pocztowy.
Nazywa plik rc (względny do bieżącego katalogu), który powinien być włączony jako część bieżącego pliku rc. Dozwolone jest nieograniczone zagnieżdżanie.
Notyfikacja Comsat(8)/biff(1) domyślnie jest włączona, lecz można ją wyłączyć przez ustawienie tej zmiennej na `no'. Alternatywnie, usługę biff można dokonfigurować przez ustawienie zmiennej na `service@', `@hostname' lub `sevice@hostname'. Nie podana wartość oznacza przyjęcie biff@localhost.
Jeśli jest to ustawione na `yes', procmail porzuci wszelkie uprawnienia, jakie może mieć (suid lub sgid). Opcja ta jest użyteczna, jeśli chcesz zagwarantować, że dolna część pliku /etc/procmailrc jest wywoływana w imieniu odbiorcy.

Rozszerzone wyrażenia regularne

Następujące żetony rozpoznawane są zarówno przez wewnętrzny egrep procmaila, jak i przez standardowy egrep(1):

^
Początek linii.
$
Koniec linii.
.
Dowolny znak poza znakiem nowej linii.
Dowolna sekwencja zero lub więcej a.
Dowolna sekwencja jednego lub więcej a.
Albo zero, albo jedno a.
[^-a-d]
Dowolny znak, który nie jest kreską, a, b, c, d, lub znakiem nowej linii.
Albo sekwencja `de', albo `abc'.
(abc)*
Zero lub więcej sekwencji `abc'.

Były to tylko przykłady, bardziej złożone kombinacje sa również dozwolone.

Następujące znaczenia żetonów są znane tylko rozszerzeniom procmaila:

^ lub $
Dopasuj nową linię (dla trafień wieloliniowych).
^^
Zakotwicz wyrażenie na samym początku obszaru przeszukiwania, lub jeśli napotkane na końcu wyrażenia, na samym końcu obszaru przeszukiwań.
\< lub \>
Dopasuj znak przed, lub po słowie. Są to ogólnie skróty dla `[^a-zA-Z0-9_]', lecz mogą także dopasowywać znaki nowej linii. Ponieważ odpowiadają rzeczywistym znakom, nadają się tylko do oddzielania słów, nie do oddzielania przestrzeni międzysłownej.
\/
Dzieli wyrażenie na dwie części. Wszystko odpowiadające prawej stronie będzie przyznane zmiennej środowiskowej MATCH.

PRZYKŁADY

Zajrzyj na stronę podręcznika procmailex(5).

ZASTRZEŻENIA

Kontynuowane linie w linii akcji, która określa program, muszą zawsze kończyć się lewym ukośnikiem, nawet jeśli podległa powłoka nie potrzebuje lub nie chce lewego ukośnika do wskazania kontynuacji. Jest tak z powodu dwustopniowego procesu przetwarzania (najpierw procmail, potem powłoka (lub nie, zależnie od SHELLMETAS)).

Nie wstawiaj komentarzy w regule w liniach warunkowych wyrażeń regularnych, linie te są przekazywane wewnętrznemu egrepowi wprost (z wyjątkiem lewych ukośników kontynuacji znajdujących się na końcu linii).

Początkowe białe spacje w kontynuowanych wyrażeniach regularnych są zazwyczaj ignorowane (więc mogą być wstawiane), lecz nie jest tak w kontynuowanych wyrażeniach warunkowych, które są odczytywane według reguł podstawiania sh(1) wewnątrz podwójnych cytatów.

Uważaj na deadlocki podczas wykonywania niezdrowych rzeczy jak forwardowanie poczty na swoje własne konto. Deadlocki można złamać przez właściwe użycie LOCKTIMEOUT.

Wszelkie domyślne wartości, których procmail używa dla zmiennych środowiskowych zawsze przeciążą te, które były wcześniej zdefiniowane. Jeśli naprawdę chcesz przeciążyć wartości domyślne, wstaw je albo do pliku rc, albo wypisz w linii poleceń jako argumenty.

Zmienne środowiskowe, ustawiane wewnątrz interpretowanej-przez-powłokę-`|' części akcji reguły nie zachowają ich wartości po zakończeniu reguły, gdyż są one ustawiane w podpowłoce procmaila. Aby upewnić się, że wartość zostanie zachowana, musisz dokonać przyznania przed początkowym `|' reguły, tak że może przechwycić stdout programu.

Jeśli w regule dostarczającej podasz tylko flagę `h' lub `b' i reguła ta zostanie dopasowana, to jeżeli nie użyłeś flagi `c', ciało listu lub (odpowiednio) jego nagłówek zostaną utracone.

ZOBACZ TAKŻE

procmail(1), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), binmail(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1), comsat(8), lockfile(1), formail(1)

BŁĘDY

Jedyne podstawienia zmiennych środowiskowych, które mogą być obsługiwane przez samego procmaila są typu $nazwa, ${nazwa}, ${nazwa:-tekst}, ${nazwa:+tekst}, ${nazwa-tekst}, ${nazwa+tekst}, $#, $n, $$, $?, $_, $- i $=; gdzie $_ będzie podmieniane nazwą bieżącego pliku rc, $- przez $LASTFOLDER, a $= będzie zawierać punktację (score) ostatniej reguły. Gdy użyte są opcje -a lub -m to "$@" rozwinie się do kolejno podanego argumentu (listy); lecz tylko jeśli przekazany jako lista argumentów do programu (?)

Procmail nie wspiera rozwijania `~'.

Do przetwarzania pliku rc używany jest bufor liniowy długości $LINEBUF i wszelkie rozwinięcia muszą zmieścić się w tym limicie. W przeciwnym wypadku zachowanie jest niezdefiniowane.

Jeśli globalny plik blokujący ma ścieżkę relatywną a bieżący katalog nie jest taki sam jak na początku, to lokalny plik blokujący nie zostanie usunięty jeśli procmail zakończy w tym momencie działanie (tak więc: używaj dla globalnych plików blokujących ścieżek absolutnych).

Lokalny plik blokujące reguły, który zaznacza początek zagnieżdżonego bloku nie działa jak by się tego oczekiwało.

Gdy przechwytuje się stdinu z reguły do zmiennej środowiskowej, jeden, kończący znak nowej linii zostanie obcięty.

ROŻNE

Jeśli wyrażenie regularne zawiera `^TO', to zostanie to podmienione przez `(^((Original-)?(Resent-)?(To |Cc |Bcc) |(X-Envelope |Apparently(-Resent)?)-To) :(.*[^a-zA-Z])?)', co powinno złapać wszystkie specyfikacje celu.

Jeśli wyrażenie regularne zawiera`^FROM_DAEMON' to zostanie przez `(^(Precedence :.*(junk |bulk |list) |(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )(.*[^(.%@a-z0-9])?(Post(ma?(st(e?r)? |n) |office) |(send)?Mail(er)? |daemon |mmdf |root |n?uucp |smtp |response |LISTSERV |owner |request |bounce |serv(ices? |er) |Admin(istrator)?)([^).! :a-z0-9].*)?$[^>]))', co powinno wyłapać listy pochodzące od większości demonów (fajne wyrażenie regularne? :-).

Jeśli wyrażenie regularne zawiera `^FROM_MAILER' to zostanie podmienione przez `(^(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )(.*[^(.%@a-z0-9])?(Post(ma(st(er)? |n) |office) |(send)?Mail(er)? |daemon |mmdf |root |n?uucp |smtp |response |serv(ices? |er) |Admin(istrator)?)([^).! :a-z0-9].*)?$[^>])' (obcięta wersja `^FROM_DAEMON'), co powinno wyłapać listy pochodzące od większości demonów-mailerowych.

Podczas przypisywania wartości logicznych zmiennym takim jak VERBOSE, DELIVERED czy COMSAT, procmail przyjmuje jako prawdziwy napis zaczynający się od: niezerowej wartości, `on', `y', `t' lub `e'. Fałsz jest każdym napisem zaczynającym się od wartości zero, `off', `n', `f' lub `d'.

Jeśli linia akcji reguły określa program, to pojedyncza para odwrotnyukośnik-nowalinia w niej występująca, na pustej linii zostanie przekształcona w nową linię.

UWAGI

Ponieważ niecytowane początkowe białe spacje są ogólnie ignorowane w plikach rc, możesz sobie wszystko powcinać według uznania.

Prowadzące `|' linii akcji, wskazujące program lub filtr, jest obcinane przed sprawdzeniem $SHELLMETAS

Pliki włączane dyrektywą INCLUDERC zawierające tylko przyznania wartości zmiennym środowiskowym mogą być dzielone z sh.

naprawdę skomplikowanego przetwarzania możesz nawet rozważyć rekurencyjne wywoływanie procmaila.

AUTOR

Stephen R. van den Berg w RWTH-Aachen, Germany

berg@pool.informatik.rwth-aachen.de
2003/03/15 BuGless